import math
p=0.7
n=100
k=1/math.sqrt(n)
a=p-k
b=p+k
print(f"I=[{a:.8f} ; {b:.8f}]")
k=1.96*math.sqrt(p*(1-p))/math.sqrt(n)
a=p-k
b=p+k
print(f"I=[{a:.8f} ; {b:.8f}]")
#------------------------------------------------------
def fact(n) :
"Calcule factoriel n."
if (n==0) :
return 1
else :
p=1
for k in range(1,n+1):
p=p*k
return p
#------------------------------------------------------
def combin (n,k):
"Calcule k parmi n."
p=1
for i in range(n-k+1,n+1) :
p=p*i
return p//fact(k)
def binomial(n,p,k):
"Calcule p(x=k)"
return math.exp(math.log(combin(n,k))+k*math.log(p)+(n-k)*math.log(1-p))
cumul=0
d=dict() # dictionaire des (k,p(x=k))
for k in range(n+1):
cumul+=binomial(n,p,k)
d[k]=cumul
for (c,v) in d.items() : # recherche de a
if v>0.025 :
a=c
break
for (c,v) in d.items() : # recherche de b
if v>0.975 :
b=c
break
print(f"I=[{a/n:.8f} ; {b/n:.8f}]")
d_bas=dict((c,v) for (c,v) in d.items() if a-10<c<a+10)
for (c,v) in d_bas.items():
print(f"{c:4d} | {v:.6f}")
if (c==a-1):
print("------------------ 0,025")
d_haut=dict((c,v) for (c,v) in d.items() if b-10<c<b+10)
for (c,v) in d_haut.items():
print(f"{c:4d} | {v:.6f}")
if (c==b-1):
print("------------------ 0,975")